package es.ucm.fdi.bdt.controller.interfaces.management;

/**
 *	Gestión de reputación 
 */
public interface IReputationManager {
	
	/**
	 * Funci�n: Escribir comentario y valorar servicio.
		ID: Rep01
		Prioridad: Media.
		Estabilidad: Media.
		Descripci�n: Permitir escribir comentarios a los usuarios sobre los servicios prestados/recibidos.
		Entrada: ID usuario, firma digital, datos del comentario.
		Salida: Mensaje de confirmaci�n.
		Origen: Interfaz gr�fica.
		Destino: Sistema.
		Necesita: Estar conectado a la red, los archivos de comentarios rep_man_publico.txt del usuario a comentar y rep_man_privado.txt del usuario que comenta.
		Acci�n: Escribir un comentario sobre un servicio y valorar servicio.
		Precondici�n: Que el usuario que quiere escribir el comentario exista en el sistema y el servicio se haya realizado.
		Postcondici�n: Nueva entrada con el comentario en los archivos de comentarios del usuario comentador y el usuario comentado.
	 * @param datos
	 * @return
	 */
	Object escribirComentarioValorarServicio(Object datos);
		
	/**
	 * Funci�n: Borrar comentario y/o valoraci�n.
		ID: Rep02
		Prioridad: Baja.
		Estabilidad: Media.
		Descripci�n: Permite a un usuario borrar su propio comentario dentro de un plazo de 30 minutos.
		Entrada: ID del comentario.
		Salida: Mensaje de confirmaci�n.
		Origen: Interfaz gr�fica.
		Destino: Sistema.
		Necesita: Estar conectado a la red, los archivos de comentarios rep_man_publico.txt del usuario comentado y rep_man_privado.txt del usuario que coment�.
		Acci�n: Borrar un comentario y/o valoraci�n de un servicio.
		Precondici�n: Que el usuario que quiere borrar el comentario exista en el sistema, el comentario que se quiere borrar exista.
		Postcondici�n: Eliminar las entradas correspondientes del comentario de los dos archivos.
	 * @param datos
	 * @return
	 */
	Object borrarComentarioValoracion(Object datos);
	
	
	/**
	 * Funci�n: Editar comentario y/o valoraci�n.
		ID: Rep03
		Prioridad: Baja.
		Estabilidad: Media.
		Descripci�n: Permite a un usuario editar su propio comentario dentro de un plazo de 30 minutos.
		Entrada: ID del comentario.
		Salida: Mensaje de confirmaci�n.
		Origen: Interfaz gr�fica.
		Destino: Sistema.
		Necesita: Estar conectado a la red, los archivos de comentarios rep_man_publico.txt del usuario comentado y rep_man_privado.txt del usuario que coment�.
		Acci�n: Editar un comentario y/o valoraci�n de un servicio.
		Precondici�n: Que el usuario que quiere editar el comentario exista en el sistema, el comentario que se quiere editar exista.
		Postcondici�n: Actualizar las entradas correspondientes del comentario de los dos archivos.
	 * @param datos
	 * @return
	 */
	Object editarComentarioValoracion(Object datos);

}
